//统计星号
/*给你一个字符串 s ，每 两个 连续竖线 '|' 为 一对 。换言之，第一个和第二个 '|' 为一对，第三个和第四个 '|' 为一对，以此类推。

请你返回 不在 竖线对之间，s 中 '*' 的数目。

注意，每个竖线 '|' 都会 恰好 属于一个对。
*/
class Solution {
public:
    int countAsterisks(string s) {
        int count = 0;
        int ret = 0;
        for (int i = 0; i < s.size(); i++) {
            if (s[i] == '|') {
                count++;
            } else {
                if (count % 2 == 0 && s[i] == '*')
                    ret++;
            }
        }
        return ret;
    }
};

// 较大分组的位置
/*在一个由小写字母构成的字符串 s 中，包含由一些连续的相同字符所构成的分组。

例如，在字符串 s = "abbxxxxzyy" 中，就含有 "a", "bb", "xxxx", "z" 和 "yy" 这样的一些分组。

分组可以用区间 [start, end] 表示，其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 "xxxx" 分组用区间表示为 [3,6] 。

我们称所有包含大于或等于三个连续字符的分组为 较大分组 。

找到每一个 较大分组 的区间，按起始位置下标递增顺序排序后，返回结果。
*/
class Solution {
public:
    vector<vector<int>> largeGroupPositions(string s) {
        vector<vector<int>> ret;
        int left = 0;
        int right = 0;
        while (right < s.size()) {
            if (s[right] != s[left]) {
                if (right - left >= 3)
                    ret.emplace_back(vector<int>{left, right - 1});
                left = right;
            }
            right++;
        }
        if (right - left >= 3)
            ret.emplace_back(vector<int>{left, right - 1});
        left = right;
        return ret;
    }
};